package com.springchang.leetcode;

/**
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 *
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 *
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/reverse-integer
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution7 {

    public int reverse(int x) {
        if(x == 0) {
            return 0;
        }

        int fuhao = x/Math.abs(x);
        x = Math.abs(x);

        long sum = 0;
        while (x > 0) {
            if(sum*10 > Integer.MAX_VALUE) {
                return 0;
            }
            sum = sum*10 + x%10;
            x /= 10;
        }

        return (int) sum*fuhao;
    }

    public static void main(String[] args) {
        Solution7 solution = new Solution7();
        System.out.println(solution.reverse(123)); //输出321
        System.out.println(solution.reverse(-123));//输出-321
        System.out.println(solution.reverse(120)); //21
        System.out.println(solution.reverse(0));   //0
        System.out.println(solution.reverse(1534236469));
    }
}
